﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using estudent.Models;
using System.Text.RegularExpressions;

namespace estudent.Controllers
{
    public class PredmetSifrantController : Controller
    {
        //
        // GET: /PredmetSifrant/

        public ActionResult Index()
        {
            estudentEnt db = new estudentEnt();
            var predmeti = db.sPredmetis.OrderBy(p=>p.imePredmeta);
            return View(predmeti);
        }



        //
        // GET: /PredmetSifrant/Create

        public ActionResult Create()
        {
            return View();
        } 

        //
        // POST: /PredmetSifrant/Create

        [HttpPost]
        public ActionResult Create(FormCollection form)
        {

            estudentEnt db = new estudentEnt();
            //validacija priimka
            if (form["imePredmeta"].Trim().Length == 0)
                ModelState.AddModelError("imePredmeta", "Polje [ime predmeta] je prazno.");
            else if ((!Regex.IsMatch(form["imePredmeta"], @"^([A-Z]|[0-9]|[a-z]|Š|Č|Ž|š|č|ž|Đ|đ|ć|Ć| )+$")))
                ModelState.AddModelError("imePredmeta", "Polje [ime predmeta] mora biti sestavljeno samo iz črk in številk.");
            if (form["stKreditnih"].Trim().Length == 0)
                ModelState.AddModelError("stKreditnih", "Polje [število kreditnih točk] je prazno.");
            else if ((!Regex.IsMatch(form["stKreditnih"], @"^(,|.|[0-9])+$")))
                ModelState.AddModelError("stKreditnih", "Polje [število kreditnih točk] mora biti sestavljeno samo iz številk.");

            sPredmeti pred = new sPredmeti();

            try
            {
                pred.imePredmeta=form["imePredmeta"];
                pred.stKreditnih = Decimal.Parse(form["stKreditnih"]);
                pred.sModula = null;
                pred.obvezni = false;
                pred.prostoIzbirni = false;
                pred.strokovnoIzbirni = false;
                pred.veljaven = null;

                if (!ModelState.IsValid)
                {
                    return View(pred);
                }
                else
                {
                    db.AddTosPredmetis(pred);
                    db.SaveChanges();
                }
                ViewData["uspeh"] = true;
                ViewData["sporocilo"] = "Predmet se je uspešno vnesel v bazo";
                return View("Rezultat");
            }
            catch
            {
                ModelState.AddModelError("stKreditnih", "Polje [število kreditnih točk] je v nepravilnem formatu.");
                return View(pred);
            }
        }
        
        //
        // GET: /PredmetSifrant/Edit/5
 
        public ActionResult Edit(int id)
        {
            estudentEnt db = new estudentEnt();
            sPredmeti pred = db.sPredmetis.FirstOrDefault(p=>p.sPredmeta==id);
            return View(pred);
        }

        //
        // POST: /PredmetSifrant/Edit/5

        [HttpPost]
        public ActionResult Edit(int id, FormCollection form)
        {
            estudentEnt db = new estudentEnt();
            //validacija priimka
            if (form["imePredmeta"].Trim().Length == 0)
                ModelState.AddModelError("imePredmeta", "Polje [ime predmeta] je prazno.");
            else if ((!Regex.IsMatch(form["imePredmeta"], @"^([A-Z]|[0-9]|[a-z]|Š|Č|Ž|š|č|ž|Đ|đ|ć|Ć| )+$")))
                ModelState.AddModelError("imePredmeta", "Polje [ime predmeta] mora biti sestavljeno samo iz črk in številk.");
            if (form["stKreditnih"].Trim().Length == 0)
                ModelState.AddModelError("stKreditnih", "Polje [število kreditnih točk] je prazno.");
            else if ((!Regex.IsMatch(form["stKreditnih"], @"^(,|.|[0-9])+$")))
                ModelState.AddModelError("stKreditnih", "Polje [število kreditnih točk] mora biti sestavljeno samo iz številk.");

            sPredmeti pred = db.sPredmetis.FirstOrDefault(p=>p.sPredmeta==id);

            try
            {
                pred.imePredmeta=form["imePredmeta"];

                if (!ModelState.IsValid)
                    return View(pred);
                else
                {
                    pred.stKreditnih = Decimal.Parse(form["stKreditnih"]);
                    db.SaveChanges();
                }
 
                return RedirectToAction("Index");
            }
            catch
            {
                ModelState.AddModelError("stKreditnih", "Polje [število kreditnih točk] je v nepravilnem formatu.");
                return View(pred);
            }
        }


        
        public ActionResult Delete(int id)
        {
            estudentEnt db = new estudentEnt();
            sPredmeti pred = db.sPredmetis.FirstOrDefault(p => p.sPredmeta == id);

            if (pred.veljaven == null)
                pred.veljaven = false;
            else
                pred.veljaven = null;
            db.SaveChanges();

            return RedirectToAction("Index");
        }


    }
}
